import {
  UserResponse,
  UserProfileResponse,
  UserProfile,
  UserPhotoResponse
} from '@/types/data'
import { RootThunkAction } from '@/types/store'
import { http } from '@/utils/http'

// 获取 我的 页面 - 用户自己的信息
export const getUser = (): RootThunkAction => {
  return async dispatch => {
    const res = await http.get<UserResponse>('/user')
    // console.log(res)

    dispatch({ type: 'user/get', payload: res.data.data })
  }
}

// 获取编辑个人信息页面数据
export const getUserProfile = (): RootThunkAction => {
  return async dispatch => {
    const res = await http.get<UserProfileResponse>('/user/profile')

    dispatch({ type: 'profile/getUserProfile', payload: res.data.data })
  }
}

// 修改用户个人资料 - 支持修改：昵称、简介、性别、生日
// dispatch( updateUserProfile({ name }) )
// dispatch( updateUserProfile({ intro }) )
// dispatch( updateUserProfile({ gender }) )
// dispatch( updateUserProfile({ birthday }) )

// 方式1：自己手动为 4 个属性创建类型
// type UpdateUserProfileParams = {
//   name?: string
//   intro?: string
//   gender?: string
//   birthday?: string
// }
// type A = Partial<UserProfile>
export const updateUserProfile = (
  userProfile: Partial<UserProfile>
): RootThunkAction => {
  return async dispatch => {
    await http.patch('/user/profile', userProfile)

    dispatch({ type: 'profile/update', payload: userProfile })
  }
}

// 更新头像
export const updatePhoto = (file: FormData): RootThunkAction => {
  return async dispatch => {
    const res = await http.patch<UserPhotoResponse>('/user/photo', file)

    // console.log(res)
    dispatch({ type: 'profile/photo', payload: res.data.data.photo })
  }
}
